#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
vector<int>v,dp;
vector<vector<int>> w; 
void dfs(int x,int f,int y)
{
    if(y!=-1)
    {
        dp[x]=max(v[x],v[x]-v[f]+dp[y]);
    }
    for(int i=0;i<w[x].size();i++)
    {
        if(w[x][i]!=f)
        {
            dfs(w[x][i],x,f);
        }
    }
}
void solve()
{
    cin>>n;
    dp=v=vector<int>(n+1);
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    dp[1]=v[1];
    int x,y;
    w=vector<vector<int>> (n+1); 
    for(int i=1;i<n;i++)
    {
        cin>>x>>y;
        w[x].push_back(y);
        w[y].push_back(x);
    }
    for(int i=0;i<w[1].size();i++)
    {
        dp[w[1][i]]=v[w[1][i]];
    }
    dfs(1,-1,-1);
    for(int i=1;i<=n;i++)
    {
        cout<<dp[i]<<" ";
    }
    cout<<endl;
}
signed main()
{
    //ios::sync_with_stdio(false);
    //cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}